package com.pingba.dao.msg;

import com.pingba.dao.BaseDao;
import com.pingba.entity.User;
import com.pingba.entity.msg.MsgSend;
import com.pingba.view.apply.MsgSendWithApplyInfoView;
import com.pingba.view.nearby.DbQueryView;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Created by Administrator on 2015/10/25 0025.
 */
@Repository
public interface MsgSendDao extends BaseDao<MsgSend,Long> {

    void setReplied(MsgSend msgSend);

    void setReaded(MsgSend msgSend);

    List<MsgSend> getUnhandled(long userId);

    List<MsgSend> getMysends(long userId);



    List<MsgSendWithApplyInfoView> myMsgWithApply(User me);

    /**
     * 最近发送的消息
     * @param userId
     * @return
     */
    List<MsgSend> recentSend(long userId);


    /**
     * 通过一个VO查询所有的结果
     * 附近消息所有的查询都走这个接口
     * @param dbQueryView
     * @return
     */
    List<MsgSend> near(DbQueryView dbQueryView);

    /**
     * 检查用户发送的消息是否有新的msgApply
     * @param me
     * @return
     */
    List<MsgSendWithApplyInfoView> newMyMsgWithApply(User me);

    /**
     * 删除一条msgsend以及所有该条的apply
     * @param msgSendId 消息id
     * @param userId    用户id
     */
    void deleteMsgSendAndApplies(long msgSendId, long userId);

//    /**
//     * 带查询条件
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @param query
//     * @param curPage
//     * @param orderType
//     * @return
//     */
//    List<MsgSend> nearByListQuery(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now, String query,int curPage, int orderType);
//
//    /**
//     * 带查询条件，过滤出女性发送的消息
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @param query
//     * @param curPage
//     * @param orderType
//     * @return
//     */
//    List<MsgSend> nearByListQueryFilterFemale(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now, String query,int curPage, int orderType);
//
//    /**
//     * 带查询条件，过滤出男性发送的信息
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @param query
//     * @param curPage
//     * @param orderType
//     * @return
//     */
//    List<MsgSend> nearByListQueryFilterMale(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now, String query,int curPage, int orderType);
//
//
//    /**
//     * 列表视图，不带查询条件，男女都有
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @param curPage
//     * @param orderType
//     * @return
//     */
//    List<MsgSend> nearByList(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now,int curPage, int orderType);
//
//
//    /**
//     * 不带查询条件，只有女性用户的消息
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @param curPage
//     * @param orderType
//     * @return
//     */
//    List<MsgSend> nearByListFilterFemale(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now,int curPage, int orderType);
//
//    /**
//     * 不带查询条件，只有男性用户的信息
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @param curPage
//     * @param orderType
//     * @return
//     */
//    List<MsgSend> nearByListFilterMale(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now,int curPage, int orderType);
//
//    List<MsgSend> nearByMap(double longitude, double latitude, int range, long now);
//
//    List<MsgSend> nearBy(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now);
//
//    /**
//     * 只查询女性用户发送的消息
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @return
//     */
//    List<MsgSend> nearByFilterFemale(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now);
//
//    /**
//     * 只查询男性用户发送的消息
//     * @param minLongitude
//     * @param maxLongitude
//     * @param minLatitude
//     * @param maxLatitude
//     * @param now
//     * @return
//     */
//    List<MsgSend> nearByFilterMale(double minLongitude, double maxLongitude, double minLatitude, double maxLatitude, long now);
}
